---
title: SvgNodeRenderer SVG节点渲染器
icon: Code
relatedFile: app/src/core/render/canvas2d/entityRenderer/svgNode/SvgNodeRenderer.tsx
---

用于渲染 SVG 节点，确保它们在界面上正确显示，并根据其状态（例如是否被选中）进行额外的视觉处理。

## 核心功能

这个服务的主要职责是接收一个 `SvgNode` 对象，并将其渲染到用户界面上。它会根据节点的不同属性和状态，调用项目中的其他渲染器来完成复杂的渲染任务。

## API

### `render(svgNode: SvgNode): void`

此方法负责渲染给定的 `svgNode`。

-   **参数**:
    -   `svgNode`: 要渲染的 `SvgNode` 对象。

-   **渲染流程**:
    -   **选中状态处理**: 如果 `svgNode` 处于选中状态 (`svgNode.isSelected` 为 `true`)，服务会调用 `this.project.collisionBoxRenderer.render` 来在 SVG 节点外部绘制一个碰撞框。这个碰撞框的样式基于 `this.project.stageStyleManager.currentStyle.CollideBoxSelected`。
    -   **图像元素渲染**: 接下来，服务会使用 `this.project.imageRenderer.renderImageElement` 来渲染 `svgNode` 的图像部分。在渲染之前，它会通过 `this.project.renderer.transformWorld2View` 将 SVG 节点碰撞框的矩形位置从世界坐标转换为视图坐标，以确保图像在屏幕上的正确位置。渲染时还会考虑 `svgNode` 的缩放比例 (`svgNode.scale`)。
    -   **实体细节渲染**: 最后，服务会调用 `this.project.entityRenderer.renderEntityDetails(svgNode)` 来渲染 `svgNode` 的其他实体细节。
